package dac.sort.core;

/**
 * 插入排序
 * 期望时间T(n)=θ(n^2)
 *
 */
public class InsertionSort implements Sort {

	/**
	 * 排序方法主体
	 * @param array 待排序数组
	 * @param sortType 排序策略
	 */
	public int[] sort(int[] array, int sortType) {
		int len = array.length;

		for (int i = 0; i < len - 1; i++) {
			for (int j = i + 1; j < len; j++) {
				/**两个数组元素比较后，排位不符合排序策略时，交换值*/
				if ((array[i] > array[j] && sortType == SortType.ASC)
						|| (array[i] < array[j] && sortType == SortType.DESC)) {
					int temp = array[j];
					array[j] = array[i];
					array[i] = temp;
				}
			}
		}
		return array;
	}
}
